package com.tianxiabuyi.utils;

import com.tianxiabuyi.Message;

import java.util.HashMap;
import java.util.Map;

public final class ErrcodeUtil {

    // errcode
    /**
     * 操作失败
     */
    public static final Integer FAILURE = 30000; // 操作失败
    /**
     * 新闻不存在
     */
    public static final Integer NEWS_NOT_FOUND = 30001; // 新闻不存在
    /**
     * 添加设备号失败
     */
    public static final Integer DEVICE_CREATE_FAILED = 30002; // 添加设备号失败
    /**
     * 响应失败
     */
    public static final Integer RESPONSE_FAILED = 30002; // 响应失败
    /**
     * 科室不存在
     */
    public static final Integer DEPTS_NOT_FOUND = 30011; // 科室不存在
    /**
     * 登录失败
     */
    public static final Integer LOGIN_FAILED = 30021; // 登录失败
    /**
     * 用户名不存在
     */
    public static final Integer NO_USER = 30022; // 用户名不存在
    /**
     * 密码不准确
     */
    public static final Integer WRONG_PASSWORD = 30023; // 密码不准确
    /**
     * 模块已存在
     */
    public static final Integer MODUAL_EXISTS = 30024; // 模块已存在
    /**
     * 注册失败
     */
    public static final Integer REGISTER_FAILED = 30030; // 注册失败
    /**
     * 用户已存在
     */
    public static final Integer USER_EXITS = 30031; // 用户已存在
    /**
     * 用户名长度不合法
     */
    public static final Integer USERNAME_ILLEGAL_LENGTH = 30032; // 用户名长度不合法
    /**
     * 密码长度不合法
     */
    public static final Integer PASSWORD_ILLEGAL_LENGTH = 30033; // 密码长度不合法
    /**
     * 身份证不合法
     */
    public static final Integer IDCARD_ILLEGAL = 30034; // 身份证不合法
    /**
     * 用户名不合法
     */
    public static final Integer USERNAME_ILLEGAL = 30035; // 用户名不合法
    /**
     * 密码不合法
     */
    public static final Integer PASSWORD_ILLEGAL = 30036; // 密码不合法
    /**
     * 两次密码不一致
     */
    public static final Integer PASSWORD_DIFF = 30037; // 两次密码不一致
    /**
     * 手机号码不合法
     */
    public static final Integer PHONE_ILLEGAL = 30038; // 手机号码不合法
    /**
     * 没有相关数据
     */
    public static final Integer NO_RESULT = 30041; // 没有相关数据
    /**
     * 输入的长度不合法
     */
    public static final Integer LENGTH_ILLEGAL = 30042; // 输入的长度不合法
    /**
     * 非法请求
     */
    public static final Integer ILLEGAL_REQUEST = 30051; // 非法请求
    /**
     * 修改失败，没有该用户
     */
    public static final Integer MOD_FAILED_NOUSER = 30061; // 修改失败，没有该用户
    /**
     * 修改失败，原始密码错误
     */
    public static final Integer MOD_FAILED = 30071; // 修改失败，原始密码错误
    /**
     * 该分组有患者不能删除
     */
    public static final Integer GROUP_DES_FAILED = 30072; // 该分组有患者不能删除
    /**
     * 该患者已存在于这个分组中
     */
    public static final Integer PATIENT_ADD_FAILED = 30073; // 该患者已存在于这个分组中
    /**
     * 该患者已经被删除
     */
    public static final Integer PATIENT_DEL_FAILED = 30074; // 该患者已经被删除
    /**
     * 除绑定失败
     */
    public static final Integer DELBIND_FAILED = 30075; // 除绑定失败
    /**
     * 医保号不能为空
     */
    public static final Integer MEDEICALNO_ILLEGAL = 30076; // 医保号不能为空
    /**
     * 您已经提交，无需重复提交
     */
    public static final Integer HAVE_COMMITED = 30077; // 您已经提交，无需重复提交
    /**
     * 患者不存在
     */
    public static final Integer NO_PATIENT = 30078; // 患者不存在
    /**
     * 发送错误
     */
    public static final Integer SEND_ERROR = 30079; // 发送错误
    /**
     * 号源不足
     */
    public static final Integer NO_NUMBER = 30080; // 号源不足
    /**
     * 病人处于离线状态稍后自动发送
     */
    public static final Integer NO_ONLINE = 30081; // 病人处于离线状态稍后自动发送
    /**
     * 科室已存在
     */
    public static final Integer DEPT_EXIST = 30082; // 科室已存在
    /**
     * 该病人当天已安排该类手术
     */
    public static final Integer HAVE_HANDLE = 30083; // 该病人当天已安排该类手术
    /**
     * 没有权限
     */
    public static final Integer NO_PERMISSOIN = 30084; // 没有权限
    /**
     * 已经被启用
     */
    public static final Integer HAVE_ENABLED = 30085; // 已经被启用
    /**
     * 确认日期已过，无法确认
     */
    public static final Integer HAVE_TIMEOUT = 30086; // 确认日期已过，无法确认
    /**
     * 该用户没有对应的身份证号
     */
    public static final Integer NO_CARDID = 30087; // 该用户没有对应的身份证号
    /**
     * 该月没有对应的工资信息
     */
    public static final Integer NO_DATE = 30088; // 该月没有对应的工资信息
    /**
     * 时间超出
     */
    public static final Integer OVER_TIME = 30087; // 时间超出
    /**
     * 考试不及格
     */
    public static final Integer FAILED_EXAM = 30088; // 考试不及格
    /**
     * 参数不合法
     */
    public static final Integer ARGUMENT_ILLEGAL = 30089; // 参数不合法
    /**
     * 该就诊人信息已存在
     */
    public static final Integer PROFILE_EXISTED = 30090; // 该就诊人信息已存在
    /**
     * 不能添加超过5个就诊人
     */
    public static final Integer PROFILE_ENOUGH = 30091; // 不能添加超过5个就诊人
    /**
     * 不能删除自己的就诊信息
     */
    public static final Integer PROFILE_WARNING = 30092; // 不能删除自己的就诊信息
    /**
     * 视频类型已存在
     */
    public static final Integer VIDEOCATE_HANE = 30093; // 视频类型已存在
    /**
     * 请核对您的姓名是否填写正确
     */
    public static final Integer LOGIN_WARNING = 30094; // 请核对您的姓名是否填写正确
    /**
     * 请在个人信息中完善您的手机号、医保类型或医保卡号
     */
    public static final Integer PATIENT_INFO = 30095; // 请在个人信息中完善您的手机号、医保类型或医保卡号
    /**
     * 数据记录已存在
     */
    public static final Integer DATA_EXITS = 30052; //数据记录已存在
    /**
     * 数据冲突
     */
    public static final Integer DATA_COLLISION = 30053; //数据冲突
    /**
     * 门诊冲突
     */
    public static final Integer CLINIC_COLLISION = 30054; //门诊冲突
    /**
     * 您已签约该医生
     */
    public static final Integer SIGN_EXISTS = 30096; // 您已签约该医生
    /**
     * 审批失败，请稍后再试
     */
    public static final Integer SUBMIT_ERROR = 30100; // 审批失败，请稍后再试
    /**
     * 第三方登录失败，您未绑定账户
     */
    public static final Integer BIND_ERROR = 30101; // 第三方登录失败，您未绑定账户
    /**
     * 第三方来源不合法
     */
    public static final Integer SOURCE_ILLEGAL = 30102; // 第三方来源不合法
    /**
     * 第三方唯一标识不能为空
     */
    public static final Integer UNIONID_ILLEGAL = 30103; // 第三方唯一标识不能为空
    /**
     * 请添加大分类
     */
    public static final Integer ADD_CLASS = 30104; // 请添加大分类
    /**
     * 请先选择科室
     */
    public static final Integer NOT_DEPT = 30105; // 请先选择科室
    /**
     * 数据添加失败
     */
    public static final Integer ADD_FAILED = 30106; // 数据添加失败

    // 返回结果描述
    private static final Map<Integer, String> msgMap = new HashMap<Integer, String>();
    static {
        msgMap.put(FAILURE, "操作失败");
        msgMap.put(NEWS_NOT_FOUND, "新闻不存在");
        msgMap.put(DEVICE_CREATE_FAILED, "添加设备号失败");
        msgMap.put(RESPONSE_FAILED, "响应失败");
        msgMap.put(DEPTS_NOT_FOUND, "科室不存在");
        msgMap.put(LOGIN_FAILED, "用户名或密码错误");
        msgMap.put(REGISTER_FAILED, "注册失败");
        msgMap.put(NO_RESULT, "没有相关数据");
        msgMap.put(ILLEGAL_REQUEST, "非法请求");
        msgMap.put(MOD_FAILED_NOUSER, "修改失败，没有该用户");
        msgMap.put(MOD_FAILED, "修改失败，原始密码错误");
        msgMap.put(NO_USER, "用户不存在");
        msgMap.put(MODUAL_EXISTS,"模块已存在");
        msgMap.put(WRONG_PASSWORD, "原密码错误");
        msgMap.put(USER_EXITS, "用户已存在");
        msgMap.put(USERNAME_ILLEGAL_LENGTH, "用户名长度至少4个字符");
        msgMap.put(PASSWORD_ILLEGAL_LENGTH, "密码长度至少6个字符");
        msgMap.put(IDCARD_ILLEGAL, "身份证不合法");
        msgMap.put(USERNAME_ILLEGAL, "用户名必须以字母或下划线开头");
        msgMap.put(PASSWORD_ILLEGAL, "密码不合法");
        msgMap.put(PHONE_ILLEGAL, "手机号码不合法");
        msgMap.put(PASSWORD_DIFF, "两次密码不一致");
        msgMap.put(LENGTH_ILLEGAL, "输入的长度不合法");
        msgMap.put(GROUP_DES_FAILED, "该分组有患者不能删除");
        msgMap.put(PATIENT_ADD_FAILED,"该患者已存在于这个分组中");
        msgMap.put(PATIENT_DEL_FAILED,"该患者已经被删除");
        msgMap.put(DELBIND_FAILED, "解除绑定失败");
        msgMap.put(MEDEICALNO_ILLEGAL, "医保号不能为空");
        msgMap.put(HAVE_COMMITED, "您已经提交，无需重复提交");
        msgMap.put(NO_PATIENT, "该患者不存在,请确认手机号");
        msgMap.put(SEND_ERROR, "发送错误，请再次发送");
        msgMap.put(NO_NUMBER, "号源不足");
        msgMap.put(NO_ONLINE, "病人处于离线状态稍后自动发送");
        msgMap.put(DEPT_EXIST, "科室已存在");
        msgMap.put(HAVE_HANDLE, "该病人当天已安排该类手术");
        msgMap.put(NO_PERMISSOIN, "对不起，您目前没有此权限");
        msgMap.put(HAVE_ENABLED, "已有模板被启用,当前启用模板id为");
        msgMap.put(HAVE_TIMEOUT, "确认日期已过，无法确认");
        msgMap.put(NO_CARDID, "该用户没有对应的身份证号");
        msgMap.put(NO_DATE, "该月没有对应的工资信息");
        msgMap.put(OVER_TIME, "考试提交已超出时间");
        msgMap.put(FAILED_EXAM, "考试不通过需再次考试");
        msgMap.put(ARGUMENT_ILLEGAL, "参数不合法");
        msgMap.put(PROFILE_EXISTED, "该就诊人信息已存在");
        msgMap.put(PROFILE_WARNING, "您不能删除自己的就诊信息");
        msgMap.put(PROFILE_ENOUGH, "不能添加超过5个就诊人");
        msgMap.put(VIDEOCATE_HANE, "视频类型已存在");
        msgMap.put(LOGIN_WARNING, "请核对您的姓名是否填写正确");
        msgMap.put(PATIENT_INFO, "请在个人信息中完善您的手机号、医保类型等信息");
        msgMap.put(DATA_EXITS, "该条数据记录已存在");
        msgMap.put(DATA_COLLISION, "数据冲突");
        msgMap.put(CLINIC_COLLISION, "门诊冲突");
        msgMap.put(SIGN_EXISTS, "您已签约该医生");
        msgMap.put(SUBMIT_ERROR, "审批失败，请稍后再试");
        msgMap.put(BIND_ERROR, "第三方登录失败，您未绑定账户");
        msgMap.put(SOURCE_ILLEGAL, "第三方来源不合法");
        msgMap.put(UNIONID_ILLEGAL, "第三方唯一标识不能为空");
        msgMap.put(ADD_CLASS, "请添加大分类");
        msgMap.put(NOT_DEPT, "请先选择科室");
        msgMap.put(ADD_FAILED, "数据添加失败");
    }

    /**
     * 设置接口返回信息和错误描述
     * @param msg
     * @param errcode
     */
    public static void setErrcode(Message msg, Integer errcode) {
        String errmsg = Tools.getDesc(msgMap.get(errcode), "未知错误");
        msg.setErrcode(errcode);
        msg.setErrmsg(errmsg);
    }

}
